﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

using Padelcenter.Common;
using Padelcenter.DataAccess;

namespace Padelcenter.BusinessLogic.Get
{
    public class GetMetodoEnvio : IBusinessLogic
    {
        public GetMetodoEnvio() { }

        public void Invoke()
        {
            MetodoEnvio_Select oMetodoEnvioSelect = new MetodoEnvio_Select();
            oMetodoEnvioSelect.MetodoEnvio = this.MetodoEnvio;
            this.Resultset = oMetodoEnvioSelect.Get();
        }

        public List<MetodoEnvio> MetodoEnvioList()
        {
            this.Invoke();

            List<MetodoEnvio> listaMetodoEnvio = new List<MetodoEnvio>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                MetodoEnvio oMetodoEnvio;
                foreach (DataRow r in dTable.Rows)
                {
                    oMetodoEnvio = new MetodoEnvio();

                    oMetodoEnvio.IdMetodoEnvio = Convert.ToInt32(r["idMetodoEnvio"]);

                    oMetodoEnvio.Descripcion = r["Descripcion"].ToString();
                    oMetodoEnvio.Activo = Convert.ToBoolean(r["Activo"]);

                    listaMetodoEnvio.Add(oMetodoEnvio);
                }
            }

            return listaMetodoEnvio;
        }

        private DataSet _resultset;
        private MetodoEnvio _metodoEnvio;

        public MetodoEnvio MetodoEnvio
        {
            get { return _metodoEnvio; }
            set { _metodoEnvio = value; }
        }

        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
    }

    public class GetMetodoEnvioZona : IBusinessLogic
    {
        public GetMetodoEnvioZona() { }

        public void Invoke()
        {
            MetodoEnvioZona_Select oMetodoEnvioZonaSelect = new MetodoEnvioZona_Select();
            oMetodoEnvioZonaSelect.MetodoEnvioZona = this.MetodoEnvioZona;
            this.Resultset = oMetodoEnvioZonaSelect.Get();
        }

        public List<MetodoEnvioZona> MetodoEnvioZonaList()
        {
            this.Invoke();

            List<MetodoEnvioZona> listaMetodoEnvioZona = new List<MetodoEnvioZona>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                MetodoEnvioZona oMetodoEnvioZona;
                foreach (DataRow r in dTable.Rows)
                {
                    oMetodoEnvioZona = new MetodoEnvioZona();

                    MetodoEnvio oMetodoEnvio = new MetodoEnvio();
                    oMetodoEnvio.IdMetodoEnvio = Convert.ToInt32(r["idMetodoEnvio"]);

                    GetMetodoEnvio oGetMedtodoEnvio = new GetMetodoEnvio();
                    oGetMedtodoEnvio.MetodoEnvio = oMetodoEnvio;

                    oMetodoEnvioZona.MetodoEnvio = oGetMedtodoEnvio.MetodoEnvioList()[0];

                    Zona oZona = new Zona();
                    oZona.IdZona = Convert.ToInt32(r["idZona"]);

                    GetZona oGetZona = new GetZona();
                    oGetZona.Zona = oZona;

                    oMetodoEnvioZona.Zona = oGetZona.ZonaList()[0];
                    
                    listaMetodoEnvioZona.Add(oMetodoEnvioZona);
                }
            }
            return listaMetodoEnvioZona;
        }

        private DataSet _resultset;

        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
        private MetodoEnvioZona _metodoEnvioZona;

        public MetodoEnvioZona MetodoEnvioZona
        {
            get { return _metodoEnvioZona; }
            set { _metodoEnvioZona = value; }
        }
    }

    public class GetMetodoEnvioDescripcion : IBusinessLogic
    {
        public GetMetodoEnvioDescripcion() { }

        public void Invoke()
        {
            MetodoEnvioDescripcion_Select oMetodoEnvioDescripcionSelect = new MetodoEnvioDescripcion_Select();
            oMetodoEnvioDescripcionSelect.MetodoEnvioDescripcion = this.MetodoEnvioDescripcion;
            this.Resultset = oMetodoEnvioDescripcionSelect.Get();
        }

        public List<MetodoEnvioDescripcion> MetodoEnvioDescripcionList()
        {
            this.Invoke();

            List<MetodoEnvioDescripcion> listaMetodoEnvioDescripcion = new List<MetodoEnvioDescripcion>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                MetodoEnvioDescripcion oMetodoEnvioDescripcion;
                foreach (DataRow r in dTable.Rows)
                {
                    oMetodoEnvioDescripcion = new MetodoEnvioDescripcion();

                    oMetodoEnvioDescripcion.Descripcion = r["Descripcion"].ToString();

                    MetodoEnvio oMetodoEnvio = new MetodoEnvio();
                    oMetodoEnvio.IdMetodoEnvio = Convert.ToInt32(r["idMetodoEnvio"]);

                    GetMetodoEnvio oGetMedtodoEnvio = new GetMetodoEnvio();
                    oGetMedtodoEnvio.MetodoEnvio = oMetodoEnvio;

                    oMetodoEnvioDescripcion.MetodoEnvio = oGetMedtodoEnvio.MetodoEnvioList()[0];

                    Idioma oIdioma = new Idioma();
                    oIdioma.IdIdioma = Convert.ToInt32(r["idIdioma"]);

                    GetIdioma oGetIdioma = new GetIdioma();
                    oGetIdioma.Idioma = oIdioma;

                    oMetodoEnvioDescripcion.Idioma = oGetIdioma.IdiomaList()[0];

                    listaMetodoEnvioDescripcion.Add(oMetodoEnvioDescripcion);
                }
            }

            return listaMetodoEnvioDescripcion;
        }

        private DataSet _resultset;
        private MetodoEnvioDescripcion _metodoEnvioDescripcion;

        public MetodoEnvioDescripcion MetodoEnvioDescripcion
        {
            get { return _metodoEnvioDescripcion; }
            set { _metodoEnvioDescripcion = value; }
        }

        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
    }
}
